package structuralPattern.flyweight.example01;

/**
 * 可共享 - 具体享元类
 * 注意：在具体享元类中，需要将内部状态和外部状态分开处理
 */
public class ConcreteFlyweight extends Flyweight{

    // 表示内部状态
    // inState 作为一个成员变量，同一个享元对象的内部状态是一致的
    private String inState;

    public ConcreteFlyweight(String inState) {
        this.inState = inState;
    }

    // 外部状态
    // 在使用的时候，通常是由外部设置，不保存在享元对象中，即时是同一个对象
    @Override
    public void operation(String state) {
        System.out.println("=== 享元对象的内部状态：" + inState);
        System.out.println("=== 享元对象的外部状态：" + state);
    }
}
